#include<iostream>
#include<vector>



int main()
{
    std::vector<int> v;
    //插入
    //没有头插，尽量满足o（1）复杂度
    v.push_back(1);//尾插
    v.push_back(2);
    v.push_back(3);

    //   for(int i=0;i<v.size();i++)
    //   {
    //     std::cout<<v[i]<<" ";
    //   }
    //   std::cout<<std::endl;

        //  std::vector<int>::iterator ite_b= v.begin();//头部迭代器，指向容器第一元素
        //   std::vector<int>::iterator ite_e= v.end();//尾部迭代器，指向容器的最后一个元素的下一个位置

    //自动类型推导
        //auto a=10;
    auto ite=v.begin();
   // std::cout<<*(ite+1)<<std::endl;//随机迭代器：重载了 + -的迭代器，可以跳过n个元素访问某个元素

    //中间插入
    v.insert(v.begin()+1,99);



    //迭代器失效：当指向的容器元素删除后，该迭代器不能继续使用
    //删除
    //按值删除
    for(auto ite=v.begin();ite!=v.end();)//适用于所有容器的按值删除写法
    {
        //如果删除他自动往后++
        if(*ite!=2)
        {
            ite=v.erase(ite);//返回值是下一个元素的迭代器，所以要赋值
        }
        //没删除往后++
        else    
            ite++;
    }
    //尾删
    v.pop_back();



    v.shrink_to_fit()//缩身
    // v.erase(v.begin()+1);
    // for(auto ite= v.begin();ite!=v.end();ite++)
    // {
    //     std::cout<<*ite<<" ";//重载了*，当指针使用
    // }
    //     std::cout<<std::endl;
    // return 0;



}